/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package mx.unam.fciencias.ActividadesCulturales.services.DAO;

import java.util.ArrayList;
import java.util.List;
import mx.unam.fciencias.actividadesculturales.entidades.db.Actividad;
import mx.unam.fciencias.actividadesculturales.entidades.db.EntidadAcademica;
import mx.unam.fciencias.actividadesculturales.entidades.db.Indicador;
import mx.unam.fciencias.actividadesculturales.entidades.db.enums.DependenciaAdministrativa;
import mx.unam.fciencias.actividadesculturales.entidades.db.enums.TipoActividad;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;

/**
 * Capa de datos de la entidad indicador.
 * @author lumartin
 */
public class IndicadorDAO extends GenericDAO {

    /**
     * Obtiene todos los indicadores.
     * @return lista con los indicadores.
     */
    public List<Indicador> getTodos() {
        Session session = getHibernateTemplate().getSessionFactory()
                .getCurrentSession();

        Criteria crit = session.createCriteria(Indicador.class);
//                .setProjection(Projections.distinct(Projections.projectionList()
//            .add(Projections.property("id"), "id")
//            .add(Projections.property("nombre"), "nombre")
//        )).setResultTransformer(Transformers.aliasToBean(Indicador.class));

        return crit.list();
    }

    /**
     * Obtiene un indicador a apartir de su identificador.
     * @param id identificador de indicador.
     * @return el indicador.
     */
    public Indicador getById(Long id) {
        return (Indicador) super.getById(Indicador.class, id);
    }

    /**
     * Guarda o actualiza un indicador
     * @param indicador a guardar
     * @return true si se guardo correctamente false si no.
     */
    public boolean guardar(Indicador indicador) {
        return super.guardar(indicador);
    }

    public List<String> findIndicadorByEA(EntidadAcademica entidadAcademica,
            Long anio){
        List<String> resultados = new ArrayList<String>();
        Session session = getHibernateTemplate().getSessionFactory()
                .getCurrentSession();
        Criteria crit = session.createCriteria(Actividad.class);
        crit.add(Restrictions.eq("entAcademicas", entidadAcademica));
        crit.add(Restrictions.eq("entAcademicas", entidadAcademica));
        return resultados;
    }

    public List<String> findIndicadorByDA(DependenciaAdministrativa depAdmin,
            Long anio1, Long anio2){
        List<String> resultados = new ArrayList<String>();

        return resultados;
    }

    public List<String> findIndicadorByTA(TipoActividad tipoActividad,
            Long anio1, Long anio2){
        List<String> resultados = new ArrayList<String>();

        return resultados;
    }
}
